Alteryxから踏み台インスタンス経由でRDS上のMySQLに接続する
Alteryxは様々なデータベースに接続できますが、
「セキュリティの都合上踏み台サーバーの向こうにDBがある」
「どうやってAlteryxから接続させるのかわからない…」
「ODBC接続しようとしたらCan't Connect to MySQL server
エラーが出た…」
というようなケースもあるかと思います。そうなんです、踏み台インスタンス経由でRDSへ接続するにはちょっぴり工夫が必要なんです。
本エントリでは、そんなbastion(踏み台)インスタンスを通してのデータベース接続が求められる環境下で、Alteryxを使って接続する方法をご紹介します。
もくじ
- 必要なツール・事前準備
- ポートフォワーディング
- EC2へSSH接続
- SSH転送
- RDSへの接続をテスト
- MySQLのODBC接続設定を追加
- Alteryx Designerで接続
- Input Data Tool(データ入力ツール)
- Connect In-DB Tool(In-DB接続ツール)
必要なツール・事前準備
本エントリで用いるツール及びバージョンは以下の通りです。
- Alteryx Designer 2019.1
- Tera Term Version 4.102
また、本エントリで検証を行うためのAWS環境及び情報は以下の通りです。
- bastion(踏み台インスタンス)となるEC2のグローバルIPアドレス もしくは ホスト名
- bastion(踏み台インスタンス)となるEC2のユーザー名(Amazon Linuxの場合は
ec2-user
) - bastion(踏み台インスタンス)となるEC2の秘密鍵
- 接続先RDSのエンドポイント
- 接続先RDSのパスワード
実施したい操作は、
- Alteryx Desingerがインストールされた環境からポートフォワーディングできるように設定
- MySQLへODBC接続
上記の2本立てです。順を追って実施していきましょう!
ポートフォワーディング
EC2へSSH接続する
まずは踏み台インスタンスとなるEC2へSSH接続します。2019年4月現在、AlteryxはWindows環境でのみ使用可能ですのでWindows OSで使用可能なSSHのクライアントソフトが必要となります。今回はTera Termを使用します。
Tera Termを起動すると、接続先についての設定画面が出ますので以下の通り入力します。
- [ホスト]:EC2インスタンスのパブリックIPアドレス、もしくはDNS
- [TCPポート]:EC2インスタンスのポート
はじめて接続するEC2インスタンスでは以下のような警告がでます。[続行]でEC2インスタンスに接続します。
接続が完了すると、以下のような認証画面が表示されます。
- [ユーザ名]:EC2インスタンスのユーザー名(Amazon Linuxの場合は
ec2-user
) - [パスフレーズ]: デフォルトのキーを使用している場合は空欄
- [RSA/DSA/ECDSA/ED25519鍵を使う]:チェックしてEC2の秘密鍵をフォルダから選択
接続が完了すると以下のような画面が出ます。これでEC2へSSH接続できました!
SSH転送
踏み台インスタンス(EC2)へSSH接続できましたので、今度はEC2を経由してRDSへ接続するためのポートフォワーディングの設定を行います。Tera Termではメニューバーの[設定]→[SSH転送]から設定可能です。
以下の通り入力します。
- [ローカルのポート]: 3306(MySQLの場合)
- [リモート側ホスト]: RDSのエンドポイント
- [ポート]: 3306(MySQLの場合)
以下の画面が表示され、[OK]を押すとSSH転送の設定は完了です。
RDSへの接続をテスト
ここまでの設定でRDS上のMySQLへ接続可能な状態となりました。念の為本当に接続できるかどうか確認してみましょう。以下のmysql
コマンドをTera Termで入力します。
mysql -u <RDSユーザー名> -p -h <RDSエンドポイント>
RDSのパスワードを入力し、接続に成功すると以下のような黄色のメッセージが出ます。なんとなく達成感がありますね。
MySQLのODBC接続設定を追加
AlteryxからMySQLに接続するにはODBCを利用します。
[追加]からMySQLのドライバを選択します。今回はMySQL ODBC 8.0 Unicode Driver
を使用していますが、格納されているデータの文字コードに合わせて適切なドライバを選択してください。MySQL Connectorが立ち上がったら以下の通りに入力します。
- [Data Source Name]:任意の名前を設定
- [TCP/IP Server]:
localhost
を指定し、MySQLのポート番号3306
を入力 - [User]:RDSのマスターユーザー名
- [Password]:RDSのパスワード
- [Database]:DB名
これで準備完了です!
Alteryx Designerで接続
ここまでくればAlteryx Designerから接続可能な状態です。方法は以下エントリで紹介されている、踏み台インスタンスを経由しないMySQLへの接続と同様です。
Input Data Tool(データ入力ツール)
Input Data Tool(データ入力ツール)の場合は、[Other Databases]→[ODBC]を選択します。
前項で設定したODBCをドロップダウンリストより選択します。
Visual Query Builderが立ち上がりますので、接続したいDBを指定します。
ワークフローを実行すると、MySQLへ接続できました!
Connect In-DB Tool(In-DB接続ツール)
Connect In-DB Tool(In-DB接続ツール)の場合、[Manage Connections]から設定します。
[Data Source]のドロップダウンリストからMySQLを選択し、[Connections]のNewボタンをクリックします。
[Connection String]のNew Database Connectionを選択します。
Input Dara Toolと同様ODBC Connectionウィンドウが立ち上がるので、ドロップダウンリストからMySQLのODBCを選択します。
[Connection Name]に任意の名前を入力し、[OK]をクリックします。
Input Dara Toolと同様Visual Query Builderが立ち上がりますので、接続したいDBを指定します。
ワークフローを実行すると、MySQLに接続できました!
さいごに
踏み台インスタンスへのポートフォワーディングを利用してAlteryx DesignerからRDSへ接続する方法のご紹介でした。Can't Connect to MySQL erver
エラーに悩まされた時や、似た構成のRDSへの接続が必要になった時にご紹介した方法を思い出していただけると幸いです。
余談ですが、本エントリを書くにあたってそもそもEC2とRDSの作成から手こずり、社内のAWSプロフェッショナルに手取り足取り優しく教えてもらいました。助けを求めれば答えてくれる救世主がたくさんいる弊社にご興味のある方、ご応募お待ちしております!
参考資料
- 【初心者向け】Amazon EC2にSSH接続する【Windows、Macintosh】 | DevelopersIO
- RDSにSSHポートフォワーディングを利用して接続してみた | DevelopersIO
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。